package com.micro.ai.template.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.micro.ai.template.entity.ExecutionLog;

import java.util.Map;

/**
 * 执行日志Service
 *
 * @author micro-ai
 * @since 0.0.1
 */
public interface ExecutionLogService extends IService<ExecutionLog> {

    /**
     * 创建执行日志
     *
     * @param executionLog 日志信息
     * @return 日志记录
     */
    ExecutionLog createLog(ExecutionLog executionLog);

    /**
     * 更新执行日志
     *
     * @param logId 日志ID
     * @param executionLog 日志信息
     */
    void updateLog(String logId, ExecutionLog executionLog);

    /**
     * 根据执行ID获取日志
     *
     * @param executionId 执行ID
     * @param page 分页参数
     * @return 日志列表
     */
    IPage<ExecutionLog> getLogsByExecutionId(String executionId, Page<ExecutionLog> page);

    /**
     * 根据Agent实例ID获取日志
     *
     * @param agentId Agent实例ID
     * @param page 分页参数
     * @return 日志列表
     */
    IPage<ExecutionLog> getLogsByAgentId(String agentId, Page<ExecutionLog> page);

    /**
     * 获取统计信息
     *
     * @param agentId Agent实例ID
     * @param days 统计天数
     * @return 统计信息
     */
    Map<String, Object> getStatistics(String agentId, int days);

    /**
     * 清理过期日志
     *
     * @param days 保留天数
     * @return 清理数量
     */
    int cleanExpiredLogs(int days);
}

